home *** CD-ROM | disk | FTP | other *** search
Wrap
SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) NNNNAAAAMMMMEEEE SSSSTTTTRRRRSSSSMMMM, DDDDTTTTRRRRSSSSMMMM, CCCCTTTTRRRRSSSSMMMM, ZZZZTTTTRRRRSSSSMMMM - Solves a real or complex triangular system of equations with multiple right-hand sides SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS Single precision Fortran: CCCCAAAALLLLLLLL SSSSTTTTRRRRSSSSMMMM ((((_s_i_d_e,,,, _u_p_l_o,,,, _t_r_a_n_s_a,,,, _d_i_a_g,,,, _m,,,, _n,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b,,,, _l_d_b)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd ssssttttrrrrssssmmmm ((((cccchhhhaaaarrrr *_s_i_d_e,,,, cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s_A,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ffffllllooooaaaatttt _a_l_p_h_a,,,, ffffllllooooaaaatttt *_a,,,, iiiinnnntttt _l_d_a,,,, ffffllllooooaaaatttt *_b,,,, iiiinnnntttt _l_d_b))));;;; Double precision Fortran: CCCCAAAALLLLLLLL DDDDTTTTRRRRSSSSMMMM ((((_s_i_d_e,,,, _u_p_l_o,,,, _t_r_a_n_s_a,,,, _d_i_a_g,,,, _m,,,, _n,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b,,,, _l_d_b)))) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd ddddttttrrrrssssmmmm ((((cccchhhhaaaarrrr *_s_i_d_e,,,, cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s_A,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ddddoooouuuubbbblllleeee _a_l_p_h_a,,,, ddddoooouuuubbbblllleeee *_a,,,, iiiinnnntttt _l_d_a,,,, ddddoooouuuubbbblllleeee *_b,,,, iiiinnnntttt _l_d_b))));;;; Single precision complex Fortran: CCCCAAAALLLLLLLL CCCCTTTTRRRRSSSSMMMM ((((_s_i_d_e,,,, _u_p_l_o,,,, _t_r_a_n_s_a,,,, _d_i_a_g,,,, _m,,,, _n,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b,,,, _l_d_b) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd ccccttttrrrrssssmmmm ((((cccchhhhaaaarrrr *_s_i_d_e,,,, cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s_A,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a_l_p_h_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_b,,,, iiiinnnntttt _l_d_b))));;;; C++ STL: ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>> ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd ccccttttrrrrssssmmmm ((((cccchhhhaaaarrrr *_s_i_d_e,,,, cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s_A,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a_l_p_h_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_b,,,, iiiinnnntttt _l_d_b))));;;; Double precision complex PPPPaaaaggggeeee 1111 SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) Fortran: CCCCAAAALLLLLLLL ZZZZTTTTRRRRSSSSMMMM ((((_s_i_d_e,,,, _u_p_l_o,,,, _t_r_a_n_s_a,,,, _d_i_a_g,,,, _m,,,, _n,,,, _a_l_p_h_a,,,, _a,,,, _l_d_a,,,, _b,,,, _l_d_b) C/C++: ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd zzzzttttrrrrssssmmmm ((((cccchhhhaaaarrrr *_s_i_d_e,,,, cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s_A,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a_l_p_h_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_b,,,, iiiinnnntttt _l_d_b))));;;; C++ STL: ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>> ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>> vvvvooooiiiidddd zzzzttttrrrrssssmmmm ((((cccchhhhaaaarrrr *_s_i_d_e,,,, cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s_A,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _m,,,, iiiinnnntttt _n,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a_l_p_h_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_b,,,, iiiinnnntttt _l_d_b))));;;; IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN These routines are part of the SCSL Scientific Library and can be loaded using either the ----llllssssccccssss or the ----llllssssccccssss____mmmmpppp option. The ----llllssssccccssss____mmmmpppp option directs the linker to use the multi-processor version of the library. When linking to SCSL with ----llllssssccccssss or ----llllssssccccssss____mmmmpppp, the default integer size is 4 bytes (32 bits). Another version of SCSL is available in which integers are 8 bytes (64 bits). This version allows the user access to larger memory sizes and helps when porting legacy Cray codes. It can be loaded by using the ----llllssssccccssss____iiii8888 option or the ----llllssssccccssss____iiii8888____mmmmpppp option. A program may use only one of the two versions; 4-byte integer and 8-byte integer library calls cannot be mixed. The C and C++ prototypes shown above are appropriate for the 4-byte integer version of SCSL. When using the 8-byte integer version, the variables of type iiiinnnntttt become lllloooonnnngggg lllloooonnnngggg and the <<<<ssssccccssssllll____bbbbllllaaaassss____iiii8888....hhhh>>>> header file should be included. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN SSSSTTTTRRRRSSSSMMMM and DDDDTTTTRRRRSSSSMMMM solve a real triangular syste m of equations with multiple right-hand sides. CCCCTTTTRRRRSSSSMMMM and ZZZZTTTTRRRRSSSSMMMM solve a complex triangular system of equations with multiple right-hand sides. These routines solve one of the following matrix equations, using the operation associated with each: _o_p(_A) _X = _a_l_p_h_a _B _B <- _a_l_p_h_a _o_p(_A-_1)_B or PPPPaaaaggggeeee 2222 SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) _X _o_p(_A) = _a_l_p_h_a _B _B <- _a_l_p_h_a _B _o_p(_A-_1) where * _a_l_p_h_a is a scalar * _X and _B are _m-by-_n matrices * _A is either a unit or nonunit upper or lower triangular matrix * _A-_1 is the inverse of _A * _o_p(_A) is one of the following: _o_p(_A) = _A _o_p(_A) = _A_T _o_p(_A) = _A_H (CCCCTTTTRRRRSSSSMMMM and ZZZZTTTTRRRRSSSSMMMM only) where _A_T is the transpose of _A, and _A_H is the conjugate transpose of _A. See the NOTES section of this man page for information about the interpretation of the data types described in the following arguments. These routines have the following arguments: _s_i_d_e Character. (input) Specifies whether _o_p(_A) appears on the left or right of _X, as follows: _s_i_d_e = 'L' or 'l': op(A)*X = alpha*B _s_i_d_e = 'R' or 'r': X*op(A) = alpha*B For C/C++, a pointer to this character is passed. _u_p_l_o Character. (input) Specifies whether matrix _A is an upper or lower triangular matrix, as follows: _u_p_l_o = 'U' or 'u': _A is an upper triangular matrix. _u_p_l_o = 'L' or 'l': _A is a lower triangular matrix. For C/C++, a pointer to this character is passed. _t_r_a_n_s_a Character*1. (input) Specifies the form of _o_p(_A) to be used in the matrix multiplication, as follows: PPPPaaaaggggeeee 3333 SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) _t_r_a_n_s_a = 'N' or 'n': _o_p(_A) = _A _t_r_a_n_s_a = 'T' or 't': _o_p(_A) = _A_T _t_r_a_n_s_a = 'C' or 'c': _o_p(_A) = _A_T (SSSSTTTTRRRRSSSSMMMM, DDDDTTTTRRRRSSSSMMMM), or _o_p(_A) = _A_H (CCCCTTTTRRRRSSSSMMMM, ZZZZTTTTRRRRSSSSMMMM) For C/C++, a pointer to this character is passed. _d_i_a_g Character. (input) Specifies whether _A is unit triangular, as follows: _d_i_a_g = 'U' or 'u': _A is assumed to be unit triangular. _d_i_a_g = 'N' or 'n': _A is not assumed to be unit triangular. For C/C++, a pointer to this character is passed. _m Integer. (input) Specifies the number of rows in _B. _m must be >= 0. _n Integer. (input) Specifies the number of columns in _B. _n must be >= 0. _a_l_p_h_a Scalar factor. (input) SSSSTTTTRRRRSSSSMMMM: Single precision. DDDDTTTTRRRRSSSSMMMM: Double precision. CCCCTTTTRRRRSSSSMMMM: Single precision complex. ZZZZTTTTRRRRSSSSMMMM: Double precision complex. When _a_l_p_h_a is 0, _a is not referenced, and _b need not be set before entry. For C/C++, a pointer to this scalar is passed when alpha is complex; otherwise, alpha is passed by value. _a Array of dimension (_l_d_a,_k). (input) SSSSTTTTRRRRSSSSMMMM: Single precision array. DDDDTTTTRRRRSSSSMMMM: Double precision array. CCCCTTTTRRRRSSSSMMMM: Single precision complex array. ZZZZTTTTRRRRSSSSMMMM: Double precision complex array. When _s_i_d_e = 'L' or 'l', _k is _m; when _s_i_d_e = 'R' or 'r', it is _n. Contains the matrix _A. Before entry with _u_p_l_o = 'U' or 'u', the leading _k-by-_k upper triangular part of array _a must contain the upper triangular matrix. The strictly lower triangular part of _a is not referenced. Before entry with _u_p_l_o = 'L' or 'l', the leading _k-by-_k lower triangular part of array _a must contain the lower triangular matrix. The strictly upper triangular part of _a is not PPPPaaaaggggeeee 4444 SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) referenced. When _d_i_a_g = 'U' or 'u', the diagonal elements of _a are not referenced, but they are assumed to be unity. _l_d_a Integer. (input) Specifies the first dimension of _a as declared in the calling program. When _s_i_d_e = 'L' or 'l', _l_d_a >= MMMMAAAAXXXX(1,_m). When _s_i_d_e = 'R' or 'r', _l_d_a >= MMMMAAAAXXXX(1,_n). _b Array of dimension (_l_d_b,_n). (input) SSSSTTTTRRRRSSSSMMMM: Real array. DDDDTTTTRRRRSSSSMMMM: Double precision array. CCCCTTTTRRRRSSSSMMMM: Complex array. ZZZZTTTTRRRRSSSSMMMM: Double complex array. Contains the matrix _B. Before entry, the leading _m-by-_n part of array _b must contain the right-hand side matrix _B. On exit, the solution matrix _X overwrites array _b. _l_d_b Integer. (input) Specifies the first dimension of _b as declared in the calling program. _l_d_b >= MMMMAAAAXXXX(1,_m). NNNNOOOOTTTTEEEESSSS These routines are Level 3 Basic Linear Algebra Subprograms (Level 3 BLAS). DDDDaaaattttaaaa TTTTyyyyppppeeeessss The following data types are described in this documentation: TTTTeeeerrrrmmmm UUUUsssseeeedddd DDDDaaaattttaaaa ttttyyyyppppeeee Fortran: Array dimensioned _n xxxx((((nnnn)))) Array of dimensions (_m,_n) xxxx((((mmmm,,,,nnnn)))) Character CCCCHHHHAAAARRRRAAAACCCCTTTTEEEERRRR Integer IIIINNNNTTTTEEEEGGGGEEEERRRR (IIIINNNNTTTTEEEEGGGGEEEERRRR****8888 for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision RRRREEEEAAAALLLL Double precision DDDDOOOOUUUUBBBBLLLLEEEE PPPPRRRREEEECCCCIIIISSSSIIIIOOOONNNN PPPPaaaaggggeeee 5555 SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) Single precision complex CCCCOOOOMMMMPPPPLLLLEEEEXXXX Double precision complex DDDDOOOOUUUUBBBBLLLLEEEE CCCCOOOOMMMMPPPPLLLLEEEEXXXX C/C++: Array dimensioned _n xxxx[[[[_n]]]] Array of dimensions (_m,_n) xxxx[[[[mmmm****nnnn]]]] Character cccchhhhaaaarrrr Integer iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision ffffllllooooaaaatttt Double precision ddddoooouuuubbbblllleeee Single precision complex ssssccccssssllll____ccccoooommmmpppplllleeeexxxx Double precision complex ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx C++ STL: Array dimensioned _n xxxx[[[[_n]]]] Array of dimensions (_m,_n) xxxx[[[[mmmm****nnnn]]]] Character cccchhhhaaaarrrr Integer iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]]) Single precision ffffllllooooaaaatttt Double precision ddddoooouuuubbbblllleeee Single precision complex ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> Double precision complex ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> Note that you can explicitly declare multidimensional C/C++ arrays provided that the array dimensions are swapped with respect to the Fortran declaration (e.g., xxxx[[[[nnnn]]]][[[[mmmm]]]] in C/C++ versus xxxx((((mmmm,,,,nnnn)))) in Fortran). To avoid a compiler type mismatch error in C++ (or a compiler warning message in C), however, the array should be cast to a pointer of the appropriate type when passed as an argument to a SCSL routine. SSSSEEEEEEEE AAAALLLLSSSSOOOO IIIINNNNTTTTRRRROOOO____SSSSCCCCSSSSLLLL(3S), IIIINNNNTTTTRRRROOOO____BBBBLLLLAAAASSSS3333(3S) PPPPaaaaggggeeee 6666 SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) SSSSTTTTRRRRSSSSMMMM((((3333SSSS)))) IIIINNNNTTTTRRRROOOO____CCCCBBBBLLLLAAAASSSS(3S) for information about using the C interface to Fortran 77 Basic Linear Algebra Subprograms (legacy BLAS) set forth by the Basic Linear Algebra Subprograms Technical Forum. PPPPaaaaggggeeee 7777